package com.hyd.tweet.twitter.command;

import com.hyd.tweet.twitter.StatusFormatter;
import com.hyd.tweet.util.StringUtils;
import twitter4j.Status;
import twitter4j.StatusUpdate;
import twitter4j.TwitterException;

import java.util.Arrays;
import java.util.List;

/**
 * /rt 命令，RT 指定的推
 *
 * @author yiding.he
 */
public class RetweetCommand extends Command {

    @Override
    public List<String> processCommand() throws TwitterException {
        if (arguments.isEmpty()) {
            return Arrays.asList("——没有指定要RT的推号（编号在每个推的开头，你可以RT最近看到的99个推）。");
        }

        // 检查被RT的推 ID
        int rollerId;
        try {
            rollerId = Integer.parseInt(arguments.get(0));
        } catch (NumberFormatException e) {
            return Arrays.asList("——没有指定要RT的推编号（编号在每个推的开头，你可以RT最近看到的99个推）。");
        }

        // 检查被RT的推是否存在
        Status status = user.getStatusByRollerId(rollerId);

        if (status == null) {
            return Arrays.asList("——没有找到指定编号的推（编号在每个推的开头，你可以RT最近看到的99个推）。");
        }

        // 检查RT内容
        String content = StringUtils.combine(arguments, 1);

        if (!content.equals("")) {
            content += " ";
        }

        // 生成RT内容
        String updateContent = content + "RT @" + status.getUser().getScreenName() + " " + status.getText();
        if (updateContent.length() > 140) {
            updateContent = updateContent.substring(0, 140);
        }

        StatusUpdate update = new StatusUpdate(updateContent);
        update.setInReplyToStatusId(status.getId());

        // RT
        twitter.updateStatus(update);
        return Arrays.asList("——RT成功。内容：\n" + updateContent);
    }
}
